import { ActionItem, MTableColumnType } from "../Table/types";
// crud列定义
// m_EQ_name/m_LIKE_name
export interface CrudColumnType extends MTableColumnType {
  // 是否搜索字段
  search?: Boolean,
  // 搜索类型
  searchType?: "EQ" | "LIKE" | "BT" | "IN",
  // 搜索列的属性
  searchColumnProps?: any
  // 搜索字段默认值
  searchDefaultValue?: any,
  // 表单默认值
  defaultValue?: any,
  // 表单列的属性
  formColumnProps?: any
  // 是否新增表单字段
  add?: Boolean
  // 是否编辑表单字段
  edit?: Boolean
  // 是否表单查看字段
  view?: Boolean
  // 是否列表中显示
  list?: Boolean
  // 表单校验规则
  rules?: Array<any>,
  labelCol?: any,
  wrapperCol?: any,
  labelWidth?: String | Number | undefined
  span?: number, // 新增、编辑表单列的属性[1,24]
  searchSpan?: number,// 搜索表单列的属性[1,24]
  // 动态disabled
  dynamicDisabled?: boolean | ((formData: any) => boolean)
}
export interface CrudType {
  // 标题
  title?: String
  // 缓存key
  cacheKey?: String
  // 列定义
  columns?: Array<CrudColumnType>
  // 搜索相关配置start
  // 搜索表单配置
  searchFormProps?: {},
  // 搜索表单查询按钮文本
  searchOkBtnText?: string,
  // 搜索表单重置按钮文本
  searchResetBtnText?: string,
  // 搜索相关配置end
  // 列表接口
  api?: String | ((param: any)=>Promise<any>),
  // 添加接口
  saveApi?: String | ((param: any)=>Promise<any>)
  // 修改接口
  updateApi?: String | ((param: any)=>Promise<any>)
  // 删除接口
  delApi?: String | ((param: any)=>Promise<any>)
  // 新增按钮文本
  addBtnText?: string
  // 是否显示新增按钮
  addBtn?: Boolean
  // 是否显示编辑按钮
  editBtn?: Boolean
  // 编辑按钮文本
  editBtnText?:string
  // 是否显示查看按钮
  viewBtn?: Boolean
  // 查看按钮文本
  viewBtnText?:string
  // 是否显示删除按钮
  delBtn?: Boolean
  // 删除按钮文本
  delBtnText?:string
  // 新增按钮权限码
  addPerms?: string
  // 编辑按钮权限码
  editPerms?: string
  // 查看按钮权限码
  viewPerms?: string
  // 删除按钮权限码
  delPerms?: string
  // 表单属性
  formProps?: any
  // 是否显示取消按钮
  showCancel?: Boolean
  // 是否显示确定按钮
  showOk?: Boolean
  // 操作项
  actions?: Array<ActionItem>
  // 下拉操作项
  dropdownActions?: Array<ActionItem>
  // 表格属性
  tableProps?: any
  // 弹窗类型
  dialogType?: 'drawer' | 'modal' | undefined
  // 弹窗属性
  dialogProps?: any
  // 树配置
  treeProps?: {
    btnText?: string | undefined,
    idKey?: string | undefined,
    pIdKey?: string | undefined,
    btnPerms?: string
  } | undefined
  // 是否显示搜索
  showSearch?: Boolean
  // 动态表单值,自动注入到表单值中提交到后台
  dynamicFormValues: Object | (() => Object)
}
